package ui; import javax.swing.*; import java.util.*; import java.util.Map.Entry; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.table.DefaultTableModel; import main.Bank; import main.SavingAccount; import main.SpendingAccount; import model.Account; import model.Person; /** * @author Lorand * */ public class GUI extends JFrame { private static final long serialVersionUID = 1L; private JFrame Frm; private JMenuBar meniu; private JMenu file; private JMenu Accounts; private JMenu Operations; private JMenu search; private JMenuItem eMenuItem; private JMenuItem showAccounts; private JMenuItem insertAccount; private JMenuItem deleteAccount; private JMenuItem DepositMoney; private JMenuItem extractMoney; private JMenuItem searchId; private JMenuItem searchCNP; private JButton insertButton; private JButton deleteButton; private JButton enter; private JButton extractButton; private JButton depositButton; private JButton searchButton; private JTextField formNumeText; private JTextField formIdText; private JTextField formPrenumeText; private JTextField formCNPText; private JTextField formMoneyAmountText; private JLabel formNume; private JLabel formId; private JLabel formPrenume; private JLabel formCNP; private JLabel formMoneyAmount; private JScrollPane scrollPane; private JTable tableAccounts; private JTable tableAcc; private JTable tableAc; protected Bank bank; private int iddAccounts; private JRadioButton savingRadio; private JRadioButton spendingRadio; public GUI(){ Frm= new JFrame("Homework 4"); Frm.setBounds(200, 30, 900, 660); Frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Frm.getContentPane().setLayout(null); Frm.setContentPane(new JLabel(new ImageIcon("C:/Users/Lorand/workspace/BankAccount/bank.jpg"))); meniu = new JMenuBar(); Frm.setJMenuBar(meniu); bank = new Bank(); bank.readAccounts(); iddAccounts = bank.nextIdAccount(); iddAccounts++; //tabel tableAccounts= new JTable(); tableAcc= new JTable(); tableAc= new JTable(); scrollPane= new JScrollPane(); //lista date client formId= new JLabel("ID"); formId.setVisible(false); formId.setBounds(110, 110, 100, 20); Frm.getContentPane().add(formId); formNume= new JLabel("First Name"); formNume.setVisible(false); formNume.setBounds(40, 110, 100, 20); Frm.getContentPane().add(formNume); formPrenume= new JLabel("Last Name"); formPrenume.setVisible(false); formPrenume.setBounds(40, 160, 100, 20); Frm.getContentPane().add(formPrenume); formCNP= new JLabel("CNP"); formCNP.setVisible(false); formCNP.setBounds(40, 210, 100, 20); Frm.getContentPane().add(formCNP); formIdText= new JTextField(); formIdText.setVisible(false); formIdText.setBounds(200, 110, 50, 30); Frm.getContentPane().add(formIdText); formNumeText= new JTextField(); formNumeText.setVisible(false); formNumeText.setBounds(250, 110, 200, 30); Frm.getContentPane().add(formNumeText); formPrenumeText= new JTextField(); formPrenumeText.setVisible(false); formPrenumeText.setBounds(250, 160, 200, 30); Frm.getContentPane().add(formPrenumeText); formCNPText= new JTextField(); formCNPText.setVisible(false); formCNPText.setBounds(250, 210, 200, 30); Frm.getContentPane().add(formCNPText); formMoneyAmount= new JLabel("Money Amount"); formMoneyAmount.setVisible(false); formMoneyAmount.setBounds(40, 160, 100, 20); Frm.getContentPane().add(formMoneyAmount); formMoneyAmountText= new JTextField(); formMoneyAmountText.setVisible(false); formMoneyAmountText.setBounds(250, 160, 200, 30); Frm.getContentPane().add(formMoneyAmountText); insertButton= new JButton("Insert"); insertButton.setBounds(600,200, 90, 30); insertButton.setVisible(false); Frm.getContentPane().add(insertButton); savingRadio = new JRadioButton("Saving Account"); savingRadio.setBounds(33, 300, 156, 20); savingRadio.setVisible(false); Frm.getContentPane().add(savingRadio); spendingRadio = new JRadioButton("Spending Account"); spendingRadio.setBounds(261, 300, 174, 20); spendingRadio.setVisible(false); Frm.getContentPane().add(spendingRadio); enter= new JButton("Delete"); enter.setBounds(600,300, 90, 20); enter.setVisible(false); Frm.getContentPane().add(enter); extractButton= new JButton("Extract Money"); extractButton.setBounds(600,300, 90, 20); extractButton.setVisible(false); Frm.getContentPane().add(extractButton); depositButton= new JButton("Deposit Money"); depositButton.setBounds(600,300, 90, 20); depositButton.setVisible(false); Frm.getContentPane().add(depositButton); searchButton= new JButton("Search"); searchButton.setBounds(300,300, 90, 20); searchButton.setVisible(false); Frm.getContentPane().add(searchButton); //Meniu Accounts Accounts= new JMenu ("Accounts"); Accounts.setMnemonic(KeyEvent.VK_F); meniu.add(Accounts); //Show Accounts showAccounts= new JMenuItem("Show Accounts"); showAccounts.setMnemonic(KeyEvent.VK_E); showAccounts.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { if(event.getSource()==showAccounts){ clearScreen(); tableAccounts = showAccounts(); scrollPane = new JScrollPane(tableAccounts); scrollPane.setBounds(20, 40, 800, 200); scrollPane.setVisible(true); Frm.getContentPane().add(scrollPane); } }}); Accounts.add(showAccounts); //Insert Accounts insertAccount= new JMenuItem("Insert Account"); insertAccount.setMnemonic(KeyEvent.VK_E); insertAccount.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==insertAccount){ clearScreen(); formNume.setVisible(true); formPrenume.setVisible(true); formCNP.setVisible(true); formNumeText.setVisible(true); formPrenumeText.setVisible(true); formCNPText.setVisible(true); insertButton.setVisible(true); savingRadio.setVisible(true); spendingRadio.setVisible(true); insertButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if (event.getSource() == insertButton) { String name = formNumeText.getText(); String pre = formPrenumeText.getText(); String cnp = formCNPText.getText(); if (savingRadio.isSelected()) { SavingAccount sa = new SavingAccount(new Person(name,pre,cnp),iddAccounts++,0); bank.addAccount(sa); } if(spendingRadio.isSelected()) { SpendingAccount sa = new SpendingAccount(new Person(name,pre,cnp),iddAccounts++,0); bank.addAccount(sa); } bank.writeAccounts(); } }}); } } }); Accounts.add(insertAccount); //Delete Accounts deleteAccount= new JMenuItem("Delete Account"); deleteAccount.setMnemonic(KeyEvent.VK_E); deleteAccount.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==deleteAccount){ clearScreen(); enter.setVisible(true); formId.setVisible(true); formIdText.setVisible(true); enter.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if (event.getSource() == enter) { int id = Integer.parseInt(formIdText.getText()); Account a = bank.getAccount(id); if (a == null) JOptionPane.showMessageDialog(null, "Account does not exist!"); else { assert a !=null : "not exists"; bank.deleteAccount(a); bank.writeAccounts(); } } }}); } } }); Accounts.add(deleteAccount); //meniu operations Operations= new JMenu ("Operations"); Operations.setMnemonic(KeyEvent.VK_F); meniu.add(Operations); DepositMoney= new JMenuItem("Deposit Money"); DepositMoney.setMnemonic(KeyEvent.VK_E); DepositMoney.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==DepositMoney){ clearScreen(); depositButton.setVisible(true); formId.setVisible(true); formIdText.setVisible(true); formMoneyAmountText.setVisible(true); formMoneyAmount.setVisible(true); depositButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if (event.getSource() == depositButton) { int id = Integer.parseInt(formIdText.getText()); int money = Integer.parseInt(formMoneyAmountText.getText()); double rez = bank.depositMoneyIntoAccount(id, money); if (rez == -1.0) JOptionPane.showMessageDialog(null, "Account does not exist!"); bank.writeAccounts(); } clearScreen(); tableAccounts = showAccounts(); scrollPane = new JScrollPane(tableAccounts); scrollPane.setBounds(20, 40, 800, 200); scrollPane.setVisible(true); Frm.getContentPane().add(scrollPane); }}); } } }); Operations.add(DepositMoney); extractMoney= new JMenuItem("Extract Money"); extractMoney.setMnemonic(KeyEvent.VK_E); extractMoney.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==extractMoney){ clearScreen(); extractButton.setVisible(true); formId.setVisible(true); formIdText.setVisible(true); formMoneyAmountText.setVisible(true); formMoneyAmount.setVisible(true); extractButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if (event.getSource() == extractButton) { int id = Integer.parseInt(formIdText.getText()); int money = Integer.parseInt(formMoneyAmountText.getText()); double rez = bank.extractMoneyIntoAccount(id, money); if (rez == -1.0) JOptionPane.showMessageDialog(null, "Account does not exist!"); bank.writeAccounts(); } clearScreen(); tableAccounts = showAccounts(); scrollPane = new JScrollPane(tableAccounts); scrollPane.setBounds(20, 40, 800, 200); scrollPane.setVisible(true); Frm.getContentPane().add(scrollPane); }}); } } }); Operations.add(extractMoney); //meniu search search= new JMenu ("Search"); search.setMnemonic(KeyEvent.VK_F); meniu.add(search); searchId= new JMenuItem("ID"); searchId.setMnemonic(KeyEvent.VK_E); searchId.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==searchId){ clearScreen(); formId.setVisible(true); formIdText.setVisible(true); searchButton.setVisible(true); searchButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if (event.getSource() == searchButton) { tableAc = searchAccounts(formIdText.getText(), "ID"); scrollPane = new JScrollPane(tableAc); scrollPane.setBounds(20, 40, 800, 200); scrollPane.setVisible(true); Frm.getContentPane().add(scrollPane); } }}); } } }); search.add(searchId); searchCNP = new JMenuItem("CNP "); searchCNP.setMnemonic(KeyEvent.VK_E); searchCNP.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==searchCNP){ clearScreen(); formCNP.setVisible(true); formCNPText.setVisible(true); searchButton.setVisible(true); searchButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if (event.getSource() == searchButton) { tableAcc = searchAccounts(formCNPText.getText(), "CNP"); scrollPane = new JScrollPane(tableAcc); scrollPane.setBounds(20, 40, 800, 200); scrollPane.setVisible(true); Frm.getContentPane().add(scrollPane);} }}); } } }); search.add(searchCNP); //exit file= new JMenu("Exit"); file.setMnemonic(KeyEvent.VK_F); meniu.add(file); eMenuItem = new JMenuItem("Exit Program"); eMenuItem.setMnemonic(KeyEvent.VK_E); eMenuItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()== eMenuItem){ System.exit(0);} }}); file.add(eMenuItem); Frm.setVisible(true); } private void clearScreen(){ formNume.setVisible(false); formPrenume.setVisible(false); formCNP.setVisible(false); formNumeText.setVisible(false); formPrenumeText.setVisible(false); formCNPText.setVisible(false); insertButton.setVisible(false); savingRadio.setVisible(false); spendingRadio.setVisible(false); enter.setVisible(false); tableAccounts.setVisible(false); scrollPane.setVisible(false); formId.setVisible(false); formIdText.setVisible(false); depositButton.setVisible(false); extractButton.setVisible(false); formMoneyAmountText.setVisible(false); formMoneyAmount.setVisible(false); searchButton.setVisible(false); searchButton.setVisible(false); tableAccounts.setVisible(false); tableAcc.setVisible(false); tableAc.setVisible(false); } protected DefaultTableModel buildTableModel() { Vector<String> columnNames = new Vector<String>(); columnNames.add("First Name"); columnNames.add("Last Name"); columnNames.add("CNP"); columnNames.add("Account Id"); columnNames.add("Money Amount"); columnNames.add("Account Type"); Vector<Vector<Object>> data = new Vector<Vector<Object>>(); Set<Map.Entry<String, ArrayList<Account>>> entrySet= bank.bank.entrySet(); Iterator<Map.Entry<String,ArrayList<Account>>> i= entrySet.iterator(); while(i.hasNext()){ Map.Entry<String, ArrayList<Account>> w= i.next(); ArrayList<Account> list = (ArrayList<Account>) w.getValue(); for (int j = 0;j<list.size();j++) { Person p = list.get(j).getPerson(); Vector<Object> vector = new Vector<Object>(); vector.add(p.getLastName()); vector.add(p.getFristName()); vector.add(p.getCNP()); vector.add(list.get(j).getAccountId()); vector.add(list.get(j).getMoneyAmount()); vector.add(list.get(j).getAcountName()); data.add(vector); } } return new DefaultTableModel(data, columnNames); } protected JTable searchAccount(String id, String mesaj){ JTable table; Vector<String> columnNames = new Vector<String>(); columnNames.add("First Name"); columnNames.add("Last Name"); columnNames.add("CNP"); columnNames.add("Account Id"); columnNames.add("Money Amount"); columnNames.add("Account Type"); Vector<Vector<Object>> data= bank.searchAccountA(id, mesaj); table = new JTable(new DefaultTableModel(data, columnNames)); return table; } private JTable showAccounts(){ JTable table = new JTable(buildTableModel()); return table; } private JTable searchAccounts(String id, String mesaj){ JTable table = searchAccount(id, mesaj); if (table == null) return null; table.setPreferredScrollableViewportSize(table.getPreferredSize()); return table; } }